Micron Document
Livres et Wikis | Archives | Info


JavaScript
part 19/23 Β· 89.0 KB total
layout: Wide Β· Narrow Β· Centered
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
incrementer: function () {
alert(++i);
}
};
})(); // module
compteur.obtenir(); // affiche 0
compteur.mettre(6);
compteur.incrementer(); // affiche 7
compteur.incrementer(); // affiche 8
compteur.incrementer(); // affiche 9

Prototypes

Les prototypes sont des objets utilisΓ©s lors d'un Γ©chec de rΓ©solution de
nom. Ce mΓ©canisme est un type d'hΓ©ritage : l'hΓ©ritage par prototype. En
JavaScript, tout objet possède un prototype, accessible via la méthode
Object.getPrototypeOf (ou via la propriΓ©tΓ© historique __proto__
standardisΓ©e dans ECMAScript 6 pour assurer la compatibilitΓ© entre les
navigateurs mais non recommandΓ©e). De plus, l'opΓ©rateur new permet de
transformer l'invocation d'une fonction constructeur en un objet
(instanciation) dont le prototype est Γ©gal Γ  la propriΓ©tΓ© prototype de
la fonction constructeur :

function MonConstructeur() {
this.maPropriete1 = 3;
}
const monInstance = new MonConstructeur();
alert(monInstance.maPropriete1); // affiche 3
alert(Object.getPrototypeOf(monInstance) === MonConstructeur.prototype);
// affiche true
MonConstructeur.prototype.maPropriete2 = 5;
alert(monInstance.maPropriete2); // affiche 5

Toute instance de MonConstructeur (monInstance ici) possède un prototype
Γ©gal Γ  MonConstructeur.prototype. Lors de l'utilisation d'une propriΓ©tΓ©
ou d'une mΓ©thode d'une instance de MonConstructeur
(monInstance.maPropriete1 et monInstance.maPropriete2 ici), si
l'instance ne possède pas la propriété ou la méthode recherchée, la
recherche se poursuit dans le prototype de l'instance
(MonConstructeur.prototype ici). Si la recherche Γ©choue aussi avec cet
objet, la recherche se poursuit dans le prototype de cet objet, et ainsi
de suite jusqu'à arriver à la première fonction constructeur. Si la
recherche échoue encore, cette première fonction constructeur étant une
fonction donc une instance de la fonction constructeur Function du
langage, la recherche se poursuit dans son prototype qui est Γ©gal Γ 
Function.prototype. Si la recherche Γ©choue Γ  nouveau, Function.prototype
Γ©tant un objet donc une instance de la fonction constructeur Object du
langage, la recherche se poursuit dans son prototype qui est Γ©gal Γ 
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────